package com.zjsru.plan2025.oneday;

import java.util.Arrays;

/**
 * 2643. 一最多的行
 *
 * @Author: cookLee
 * @Date: 2025-03-22
 */
public class RowAndMaximumOnes {

    /**
     * 主
     * \
     * 输入：mat = [[0,1],[1,0]]
     * 输出：[0,1]
     * 解释：两行中 1 的数量相同。所以返回下标最小的行，下标为 0 。该行 1 的数量为 1 。所以，答案为 [0,1] 。
     * \
     * 输入：mat = [[0,0,0],[0,1,1]]
     * 输出：[1,2]
     * 解释：下标为 1 的行中 1 的数量最多。该行 1 的数量为 2 。所以，答案为 [1,2] 。
     * \
     *
     * @param args args
     */
    public static void main(String[] args) {
        RowAndMaximumOnes rowAndMaximumOnes = new RowAndMaximumOnes();
        int[][] mat = new int[][]{{0, 1}, {1, 0}};
        System.out.println(Arrays.toString(rowAndMaximumOnes.rowAndMaximumOnes(mat)));
    }

    public int[] rowAndMaximumOnes(int[][] mat) {
        int index = 0;
        int count = 0;
        for (int i = 0; i < mat.length; i++) {
            int[] num = mat[i];
            long oneCount = Arrays.stream(num).filter(v -> v == 1).count();
            if (oneCount > count) {
                count = (int) oneCount;
                index = i;
            }
        }
        return new int[]{index, count};
    }

    public int[] rowAndMaximumOnes2(int[][] mat) {
        int maxOnes = 0;
        int rowIndex = 0;
        for (int i = 0; i < mat.length; i++) {
            int tot = 0;
            for (int j = 0; j < mat[i].length; j++) {
                tot += mat[i][j];
            }
            if (tot > maxOnes) {
                maxOnes = tot;
                rowIndex = i;
            }
        }
        return new int[]{rowIndex, maxOnes};
    }

}
